package br.com.speedprevweb.common;

import br.com.speedprevweb.dao.impl.TipoOcorrenciaDaoImpl;
import br.com.speedprevweb.model.Ocorrencia;
import br.com.speedprevweb.model.TipoOcorrencia;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ImportaOcorrencia {

  public ImportaOcorrencia() {
  }

  public List<ArqImportOcorrencia> lerArquivo(String arquivo) throws FileNotFoundException, IOException {

    int numRegistro = 0;
    int quantidadeErros = 0;
    String linha;
    Ocorrencia ocor;
    ArqImportOcorrencia arquivoOcorrencia;
    TipoOcorrencia tpOcor;
    List<ArqImportOcorrencia> listaDeOcorrencias = new ArrayList();
    // List<Ocorrencia> listaDeOcorrencias = new ArrayList();

    BufferedReader buffer = new BufferedReader(new FileReader("E:\\Projetos\\trunk\\SpeedPrevWeb\\ocorrencia.txt"));
    while ((linha = buffer.readLine()) != null) { // pego uma linha  
      String[] linhaSeparado = linha.split(";"); // Dando um split e jogando em um array  

      numRegistro++;
      arquivoOcorrencia = new ArqImportOcorrencia();
      arquivoOcorrencia.setNumReg(numRegistro);

      ocor = new Ocorrencia();
      ocor.setCdOcorrencia(linhaSeparado[0]);
      ocor.setDsOcorrencia(linhaSeparado[1]);
      
      // verifica o tipo de ocorrencia
      tpOcor = new TipoOcorrenciaDaoImpl().pesquisaTipoOcorrencia(Integer.parseInt(linhaSeparado[2]));
      if ("Erro: tipo de ocorrência não encontrada".equals(tpOcor.getDsTipoOcorrencia())) {
        quantidadeErros++;
        arquivoOcorrencia.setDescErros("O tipo de ocorr~encia não está cadastrada.");
      }
      ocor.setTipoOcorrencia(tpOcor);
      
      // verifica a descricao da ocorrencia
      if (ocor.getDsOcorrencia().isEmpty()) {
        quantidadeErros++;
        arquivoOcorrencia.setDescErros(arquivoOcorrencia.getDescErros() + "A descrição da ocorrência não pode ficar em branco.");
      }
     
      arquivoOcorrencia.setQteErros(quantidadeErros);
      arquivoOcorrencia.setOcorrencia(ocor);
      
      listaDeOcorrencias.add(arquivoOcorrencia);

      /*
       ocor = new Ocorrencia();
       ocor.setCdOcorrencia(linhaSeparado[0]);
       ocor.setDsOcorrencia(linhaSeparado[1]);
       tpOcor = new TipoOcorrenciaDaoImpl().pesquisaTipoOcorrencia(Integer.parseInt(linhaSeparado[2]));
       ocor.setTipoOcorrencia(tpOcor);
       listaDeOcorrencias.add(ocor); */
    }
    buffer.close();
    return listaDeOcorrencias;
  }

}
